home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / src / tla_source.lha / lensefx.s < prev    next >
Text File  |  1998-01-16  |  6KB  |  296 lines

  1. ; +----------------------------------------+
  2. ; | 'lensefx.s' > Moving Bitmap Under Lens |
  3. ; +----------------------------------------+--------------------------+
  4.  
  5.  
  6.     ; Logo now 160x60
  7.  
  8. ; --+-----------------------+--
  9.  
  10. LNS_Y        = 76        ; # of y lines to do (max 127)
  11. LNS_Time    = 15*50        ; Time (in VBL's) for efect
  12.  
  13. ; --+-----------------------+--
  14.  
  15.     CNOP    0,4
  16.  
  17. LNS2_INT
  18.     Move.w    #0,LNS_ptn            ; Do 'exp' effect Now
  19.     Move.w    #$4201,LNS_bpl+2
  20.     Bra.s    LNS_st
  21.  
  22. LNS_INT    Move.w    #1,LNS_ptn            ; 'Ripple'
  23.  
  24. LNS_st    ;-- Init CoperList --
  25.     Lea    $DFF000,a5
  26.  
  27.     _LoadPlanes    #LNS_pln, LNS_CL, 5, 40*128    ; Init Plane Ptrs
  28.     _LoadPalette24    PAL_black, LNS_CLp, 1        ; Init Palette (black)
  29.     _LoadCList    LNS_CL                ; Show CopperList
  30.     _WaitTOP
  31.     Move.w    #$8380,DMACON(a5)    ; DMAEN | BPLEN | COPEN
  32.  
  33.     ;-- Prepare for effect --
  34.     Lea    LNS_int3,a0        ; New interrupt
  35.     Jsr    AddInt3
  36.     Clr.w    INT_Timer1        ; Clear a timer
  37.     
  38.  
  39.     ;--+------------------------------------------------+--
  40.  
  41. .lns_lp
  42.  
  43.  
  44.     ;--( Fade-In if needed )--
  45.     Move.w    INT_Timer1,d1
  46.     Lsl.w    #1,d1        ; Fade Speed
  47.     Cmp.w    #255,d1        ; <fade_lev>
  48.     Bgt.s    .nofin
  49.  
  50.     Move.w    #31, d0        ; <cols-1>
  51.     Lea    PAL_black,a0    ; <pal1>
  52.  
  53.  
  54.  
  55.     Tst.w    LNS_ptn
  56.     Beq.s    .pal1
  57.  
  58.     Lea    LNS_pal2,a1
  59.     Bra.s    .paldone
  60.  
  61. .pal1    Lea    LNS_pal,a1    ; <pal2>
  62. .paldone
  63.  
  64.     Lea    PAL_temp,a2    ; <temp_pal>
  65.     Jsr    __FadePalette24
  66.  
  67.     Move.w    #0,d0
  68.     Lea    PAL_temp,a0    ; <palette>
  69.     Lea    LNS_CLp,a1    ; <copper palette>
  70.     Jsr    __LoadPalette24
  71. .nofin
  72.  
  73.  
  74.  
  75.  
  76.  
  77.     ;--( Fade-Out if needed )--
  78.     Move.w    INT_Timer1,d1
  79.     Neg.w    d1
  80.     Add.w    #LNS_Time,d1
  81.     Lsl.w    #1,d1        ; Fade Speed
  82.     Cmp.w    #255,d1
  83.     Bgt.s    .nofout
  84.  
  85.     Move.w    #31, d0        ; <cols-1>
  86.     Lea    PAL_black,a0    ; <pal1>
  87.  
  88.     Tst.w    LNS_ptn
  89.     Beq.s    .pal2
  90.  
  91.     Lea    LNS_pal2,a1
  92.     Bra.s    .pdone
  93.  
  94. .pal2    Lea    LNS_pal,a1
  95. .pdone
  96.     Lea    PAL_temp,a2    ; <temp_pal>
  97.     Jsr    __FadePalette24
  98.  
  99.     Move.w    #0,d0
  100.     Lea    PAL_temp,a0    ; <palette>
  101.     Lea    LNS_CLp,a1    ; <copper palette>
  102.     Jsr    __LoadPalette24
  103. .nofout
  104.  
  105.  
  106.  
  107.  
  108.     ;--( Fetch Sine Values )--
  109.     Lea    SINE,a0
  110.     Move.w    LNS_AngX,d0
  111.     Move.w    0(a0,d0.w*2),d0        ; X Coord
  112.     Move.w    LNS_AngY,d1
  113.     Move.w    0(a0,d1.w*2),d1        ; Y Coord
  114.  
  115.     ;--( X,Y Scaling )--
  116.     Muls    #160,d0
  117.     Asr.l    #8,d0
  118.     Asr.l    #2,d0
  119.  
  120.     Muls    #16,d1
  121.     Asr.l    #8,d1
  122.     Asr.l    #2,d1
  123.  
  124.     ;--( Rounding, Adding )--
  125.     Add.l    #80,d0            ; Final X add
  126.     Divs    #320,d0
  127.     Clr.w    d0
  128.     Swap    d0
  129.     Bpl.s    .xoki
  130.     Neg.w    d0
  131. .xoki
  132.     Sub.l    #6,d1            ; Y Centering
  133.     And.l    #$003F,d1
  134.  
  135.     ;--( Do Effect )--
  136.  
  137.     Tst.w    LNS_ptn
  138.     Beq.s    .normal            ; First 'bubble'
  139.  
  140.     Lea    LNS_bmp2,a0        ; Source Bitmap
  141.     Lea    LNS_cbf,a1        ; ChunkyBuffer
  142.     Lea    LNS_lns2,a2        ; Lens Lookup Table
  143.     Bra.s    .done
  144.  
  145. .normal    Lea    LNS_bmp,a0        ; Source Bitmap
  146.     Lea    LNS_cbf,a1        ; ChunkyBuffer
  147.     Lea    LNS_lns,a2        ; Lens Lookup Table
  148. .done
  149. ;    Lsl.w    #7,d1            ; *128
  150.     Mulu    #320,d1            ; *160 ;^)
  151.     Add.w    d0,d1
  152.     Add.w    d1,a0            ; Start Of Bitmap
  153.  
  154.     Moveq    #0,d2
  155.     Move.l    d2,d3
  156.     Move.l    d3,d4
  157.     Move.l    d4,d5
  158.  
  159.     Move.w    #LNS_Y-1,d1        ; FOR y IN 0 .. 128 LOOP
  160. .ylp    Move.w    #160/4-1,d0        ;   FOR x IN 0 .. 160 LOOP
  161. .xlp    Movem.w    (a2)+,d2-5        ;     (Get 4 Pixels)
  162.     Move.b    0(a0,d2.l),(a1)+    ;     Copy Pixel
  163.     Move.b    0(a0,d3.l),(a1)+
  164.     Move.b    0(a0,d4.l),(a1)+
  165.     Move.b    0(a0,d5.l),(a1)+
  166.     Dbra    d0,.xlp            ;   END x
  167.     Dbra    d1,.ylp            ; END y
  168.  
  169.  
  170.     ;-- C2P --
  171.     _WaitVBL
  172.     Lea    LNS_cbf,a0
  173.     Lea    LNS_pln,a1
  174.     Lea    CHUNKY,a2
  175.     Move.l    #160*LNS_Y/8-1,d0
  176.  
  177.  
  178.  
  179.     Tst.w    LNS_ptn
  180.     Beq.s    .c2p16
  181.     Jsr    c2p32
  182.     Bra.s    .c2pd
  183. .c2p16    Jsr    c2p16
  184. .c2pd
  185.     Tst.w    EXIT
  186.     Bne.s    .bye
  187.  
  188.     Cmp.w    #LNS_Time,INT_Timer1    ; Wait 5 seconds
  189.     Blt.s    .lns_lp
  190.  
  191.  
  192.     ;-- QUIT --
  193.  
  194.     Move.w    #$0180,DMACON(a5)
  195.     _WaitVBL
  196.  
  197. .bye    Rts
  198.  
  199.  
  200.  
  201. ;    --+---------------+--
  202. ;    --| VBL INTERRUPT |--
  203. ;    --+---------------+----------------------------------+--
  204.  
  205.     CNOP    0,4
  206.  
  207. LNS_int3
  208.     Movem.l    d0-7/a0-6,-(sp)
  209.  
  210.     ;--( Update Coords )--
  211.     Move.w    LNS_AngX,d0
  212.     Addq.w    #2,d0
  213.     And.w    #$03FF,d0
  214.     Move.w    d0,LNS_AngX
  215.  
  216.     Move.w    LNS_AngY,d1
  217.     Add.w    #12,d1
  218.     And.w    #$03FF,d1
  219.     Move.w    d1,LNS_AngY
  220.  
  221.     ;--( General VBlank Stuff)--
  222.     Jsr    PT_Music
  223.     Add.w    #1,INT_Timer1
  224.     Add.w    #1,INT_Timer2
  225.  
  226.     Btst    #6,$BFE001
  227.     Bne.s    .nolmb
  228.     Move.w    #-1,EXIT
  229.  
  230. .nolmb    Movem.l    (sp)+,d0-7/a0-6
  231.     Move.w    #$0020,$DFF000+INTREQ
  232.     Nop
  233.     Rte
  234.  
  235.  
  236.  
  237. ; +-------+
  238. ; | DATAS |    
  239. ; +-------+-------------------------------------------+
  240.  
  241.     CNOP    0,4
  242.  
  243. LNS_AngX    Dc.w    800
  244. LNS_AngY    Dc.w    0
  245.  
  246. LNS_ptn    Dc.w    0                    ; Which of the two to use
  247.  
  248. LNS_pal        dc.l    $00000000,$00000000,$00121212,$00242424
  249.         dc.l    $00494949,$006d6d6d,$00808080,$00b6b6b6
  250.         dc.l    $00ffffff,$004f6b81,$00607e91,$007491a3
  251.         dc.l    $0086a3b3,$009bb6c2,$00b4cad4,$00ccdde3
  252.  
  253. LNS_pal2    dc.l    $00000033,$000d0e51,$0012135d,$00141663,$00171869,$00191b6f,$001c1e75,$001e217b
  254.         dc.l    $00212381,$00232687,$00272a90,$002b2e99,$002d319f,$003033a5,$003236ab,$003539b1
  255.         dc.l    $00373cb7,$003a3ebd,$003c41c3,$003f44c9,$004449d5,$004e53d8,$00565bdb,$005c61dd
  256.         dc.l    $00666be1,$006f75e5,$00767ce7,$007d83ea,$00848aeb,$008c91ef,$00949af1,$00999ef3
  257.  
  258.  
  259. LNS_bmp        incbin    'TLA/lens/ExpPic2.CNK'            ; The Bitmap
  260.         incbin    'TLA/lens/ExpPic2.CNK'
  261. LNS_bmp2    incbin    'TLA/lens/WaterPic.CNK'
  262.         incbin    'TLA/lens/WaterPic.CNK'
  263. LNS_lns        incbin    'TLA/lens/Lens2a.RAW'            ; The Lens Lookup Table
  264. LNS_lns2    incbin    'TLA/lens/Lens2b.RAW'
  265.  
  266. ; +-------------------------------------------+
  267.  
  268.     section    'LNS_pln',BSS_C
  269. LNS_pln    Ds.b    40*128*5                ; Planar Display (320x128x4)
  270.  
  271. ; +-------------------------------------------+
  272.  
  273.     section    'LNS_cbf',BSS
  274. LNS_cbf    Ds.b    160*128                    ; ChunkyBuffer
  275.  
  276. ; +-------------------------------------------+
  277.  
  278.     section    'LNS_CL',DATA_C
  279. LNS_CL    Dc.w    BPL0PTH,0,BPL0PTL,0,BPL1PTH,0,BPL1PTL,0
  280.     Dc.w    BPL2PTH,0,BPL2PTL,0,BPL3PTH,0,BPL3PTL,0
  281.     Dc.w    BPL4PTH,0,BPL4PTL,0
  282.  
  283.     Dc.w    DDFSTRT,$38,DDFSTOP,$D0,DIWSTRT,$2C81,DIWSTOP,$2CC1
  284.     Dc.w    BPL1MOD,-48,BPL2MOD,-8
  285.  
  286.     Dc.w    BPLCON1,0,BPLCON2,0
  287.     Dc.w    FMODE,$4003            ; ScanDouble + FastLargeGrab
  288.  
  289. LNS_CLp    ColBank    1                ; 32 Colours
  290.  
  291.     Dc.w    $6007,$FFFE
  292. LNS_bpl    Dc.w    BPLCON0,$5201
  293.     Dc.w    $F807,$FFFE,BPLCON0,$0201
  294.  
  295.     Dc.w    $FFFF,$FFFE
  296.